package alo.p6.work5;

import alo.p6.BinaryTreeNode;

/**
 * @ClassName RemoveHalfNodes
 * @Description 删除所有的半结点、删除叶子结点
 * @Author Fanxc
 * @DATE 2021/3/8 22:33
 * @Version 1.0
 */
public class RemoveHalfNodes {
    //删除半结点
    // 对于半结点，把自己仅有的孩子返回给自己的双亲，就算是把该半结点删除了
    BinaryTreeNode removeHalfNodes(BinaryTreeNode root){
        if (root==null){
            return null;
        }
        root.setLeft(removeHalfNodes(root.getLeft()));
        root.setRight(removeHalfNodes(root.getRight()));
        if (root.getLeft()==null&&root.getRight()==null){
            return root;
        }
        if (root.getLeft()==null){
            return root.getRight();
        }
        if (root.getRight()==null){
            return root.getLeft();
        }
        return root;
    }
    //删除叶子结点，只需对结点进行左右孩子有无进行判断，若都无，则把该阶段设置为null
    BinaryTreeNode removeLeaves(BinaryTreeNode root){
        if (root!=null){
            if (root.getLeft()==null&&root.getRight()==null){
                root=null;
            }else {
                root.setLeft(removeLeaves(root.getLeft()));
                root.setRight(removeLeaves(root.getRight()));
            }
        }
        return root;
    }
}
